home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.4 Applications 1997 August / SGI IRIX 6.4 Applications 1997 August.iso / dist / mmailp.idb / usr / lib / Zmail / bin / lookup.all.sgi.z / lookup.all.sgi
Encoding:
Text File  |  1997-01-22  |  2.4 KB  |  82 lines

  1. :
  2. #
  3. # E-Mail address directory lookup script to read the sendmail aliases file,
  4. # password file, and user's .addresses file.  (Format of .addresses file
  5. # is one address per line -- no comments or extra information.)
  6. #
  7. PATH=$PATH:/usr/local/bin
  8.  
  9. if [ $# -ne 2 ]
  10. then
  11.     echo "`basename $0`: Expected 2 args, got $#"
  12.     exit 3                    # Incorrect arguments
  13. fi
  14. matches=${TMPDIR-/tmp}/almatch$$
  15. domainname=`(domainname) 2>/dev/null`
  16. if test -n "$domainname"
  17. then
  18.     domainname="-d $domainname"
  19. else
  20.     hostname=`( hostname || uname -n || uuname -l ) 2>/dev/null`
  21.     case "$hostname" in
  22.     *.*) domainname="-d $hostname";;
  23.     esac
  24. fi
  25. touch $matches
  26. # Read user's .addresses file
  27. if [ -z "$ADDRESSES" ]
  28. then
  29.     ADDRESSES=$HOME/.addresses
  30. fi
  31. # Nice to do this, but it doesn't work.
  32. #egrep "$2" $ADDRESSES | awk '{ print $1 }' >> $matches 2>/dev/null
  33. (egrep -i "$2" $ADDRESSES || fgrep -i "$2" $ADDRESSES) >> $matches 2>/dev/null
  34. # see how many matches we made
  35. #
  36. # make SP = space + tab
  37. SP=`echo x | tr x '\011'``echo x | tr x '\040'`
  38. #
  39. #getaliases="(ypcat $hostname aliases || cat /usr/lib/aliases || cat /etc/aliases) 2>/dev/null"
  40. #eval "$getaliases" | sed 's/#.*//' | egrep -i \^"[^:]*$2[^:]*": | \
  41. #    sed "s/\(.*\):[$SP]*\(.*\)"'/\2, forwarding address for <\1>/' >> $matches
  42.     #sed "s/[$SP]*:[$SP]*"'\(.*\)/ (\1)/' >> $matches
  43. #
  44. # determine how to read the password file, then read it.
  45. #getpasswd="(ypcat $hostname passwd || cat /etc/passwd) 2>/dev/null"
  46. #eval "$getpasswd" | cut -d: -f1,5 | egrep -i "$2" | \
  47. #    sed 's/^\([^:]*\):\(\([^,]*\).*\)$/\1 (\3), \2/' >> $matches
  48. #
  49.  
  50. ADDR=`echo "'"$2"'"`
  51. getlocate="locate -t $ADDR"
  52. #eval "$getlocate" | sed "s/[$SP]/ /g" >> $matches
  53. #eval "$getlocate" | nawk -F\t '{printf ("%s %s %s %s|%s\n", $2, $3, $4, $5, $1)}' >> $matches
  54. eval "$getlocate" |\
  55. nawk '{A=substr($0,33,length($0)-32);
  56.        D=substr($0,1,32);
  57.        printf ("%s|%s\n", A, D)}' >> $matches
  58. sort -u -o $matches $matches 2>/dev/null
  59. count=`wc -l < $matches`
  60. #
  61. EXIT=1                        # Execution failure
  62. if [ $count -eq 0 ]
  63. then
  64.     echo "$2"
  65.     EXIT=4                    # No matches found
  66. elif [ $count -gt $1 ] && [ $1 -gt 0 ]
  67. then
  68.     echo "Matched $count names (max $1)"
  69.     echo "Use a more specific pattern please."
  70.     EXIT=2                    # Too many matches
  71. else
  72.     cat $matches
  73.     if [ $count -eq 1 ]
  74.     then
  75.     EXIT=5                    # Exactly one match
  76.     else
  77.     EXIT=0                    # At least one match
  78.     fi
  79. fi
  80. rm -f $matches
  81. exit $EXIT
  82.